package pe.com.tma.model;

import java.io.Serializable;

import java.sql.Timestamp;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.IdClass;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;

@Entity
@NamedQueries({
  @NamedQuery(name = "Orden.findAll", query = "select o from Orden o")
})
@Table(name = "\"orden\"")
@IdClass(OrdenPK.class)
public class Orden implements Serializable {
    @Column(name="TipoOrden")
    private String tipoOrden;
    @Column(name="cantidad")
    private Number cantidad;
    @Column(name="cantidadSaldo")
    private Number cantidadSaldo;
    @Column(name="codMoneda")
    private Integer codMoneda;
    @Column(name="comision")
    private Number comision;
    @Column(name="ctaPropia")
    private String ctaPropia;
    @Column(name="especial")
    private String especial;
    @Column(name="estado", nullable = false)
    private String estado;
    @Column(name="fechaLimite")
    private Timestamp fechaLimite;
    @Id
    @Column(name="fechaOrden", nullable = false)
    private Timestamp fechaOrden;
    @Column(name="firmado")
    private String firmado;
    @Id
    @Column(name="idOrden", nullable = false)
    private Integer idOrden;
    @Column(name="monto")
    private Number monto;
    @Column(name="montoSaldo")
    private Number montoSaldo;
    @Column(name="motivoModificacion")
    private String motivoModificacion;
    @Column(name="observacion")
    private String observacion;
    @Column(name="precio")
    private Number precio;
    @Column(name="vigencia")
    private Integer vigencia;
    //@OneToMany(mappedBy = "orden")
    //private List<OrdenVsPoliza> ordenVsPolizaList;
    @ManyToOne
    @JoinColumn(name = "idCliente")
    private Usuario usuario;
    @ManyToOne
    @JoinColumn(name = "idInstrumento")
    private Instrumento instrumento;

    public Orden() {
    }

    public Orden(Number cantidad, Number cantidadSaldo, Integer codMoneda,
                 Number comision, String ctaPropia, String especial,
                 String estado, Timestamp fechaLimite, Timestamp fechaOrden,
                 String firmado, Usuario usuario, Instrumento instrumento,
                 Integer idOrden, Number monto, Number montoSaldo,
                 String motivoModificacion, String observacion, Number precio,
                 String tipoOrden, Integer vigencia) {
        this.cantidad = cantidad;
        this.cantidadSaldo = cantidadSaldo;
        this.codMoneda = codMoneda;
        this.comision = comision;
        this.ctaPropia = ctaPropia;
        this.especial = especial;
        this.estado = estado;
        this.fechaLimite = fechaLimite;
        this.fechaOrden = fechaOrden;
        this.firmado = firmado;
        this.usuario = usuario;
        this.instrumento = instrumento;
        this.idOrden = idOrden;
        this.monto = monto;
        this.montoSaldo = montoSaldo;
        this.motivoModificacion = motivoModificacion;
        this.observacion = observacion;
        this.precio = precio;
        this.tipoOrden = tipoOrden;
        this.vigencia = vigencia;
    }

    public String getTipoOrden() {
        return tipoOrden;
    }

    public void setTipoOrden(String tipoOrden) {
        this.tipoOrden = tipoOrden;
    }

    public Number getCantidad() {
        return cantidad;
    }

    public void setCantidad(Number cantidad) {
        this.cantidad = cantidad;
    }

    public Number getCantidadSaldo() {
        return cantidadSaldo;
    }

    public void setCantidadSaldo(Number cantidadSaldo) {
        this.cantidadSaldo = cantidadSaldo;
    }

    public Integer getCodMoneda() {
        return codMoneda;
    }

    public void setCodMoneda(Integer codMoneda) {
        this.codMoneda = codMoneda;
    }

    public Number getComision() {
        return comision;
    }

    public void setComision(Number comision) {
        this.comision = comision;
    }

    public String getCtaPropia() {
        return ctaPropia;
    }

    public void setCtaPropia(String ctaPropia) {
        this.ctaPropia = ctaPropia;
    }

    public String getEspecial() {
        return especial;
    }

    public void setEspecial(String especial) {
        this.especial = especial;
    }

    public String getEstado() {
        return estado;
    }

    public void setEstado(String estado) {
        this.estado = estado;
    }

    public Timestamp getFechaLimite() {
        return fechaLimite;
    }

    public void setFechaLimite(Timestamp fechaLimite) {
        this.fechaLimite = fechaLimite;
    }

    public Timestamp getFechaOrden() {
        return fechaOrden;
    }

    public void setFechaOrden(Timestamp fechaOrden) {
        this.fechaOrden = fechaOrden;
    }

    public String getFirmado() {
        return firmado;
    }

    public void setFirmado(String firmado) {
        this.firmado = firmado;
    }


    public Integer getIdOrden() {
        return idOrden;
    }

    public void setIdOrden(Integer idOrden) {
        this.idOrden = idOrden;
    }

    public Number getMonto() {
        return monto;
    }

    public void setMonto(Number monto) {
        this.monto = monto;
    }

    public Number getMontoSaldo() {
        return montoSaldo;
    }

    public void setMontoSaldo(Number montoSaldo) {
        this.montoSaldo = montoSaldo;
    }

    public String getMotivoModificacion() {
        return motivoModificacion;
    }

    public void setMotivoModificacion(String motivoModificacion) {
        this.motivoModificacion = motivoModificacion;
    }

    public String getObservacion() {
        return observacion;
    }

    public void setObservacion(String observacion) {
        this.observacion = observacion;
    }

    public Number getPrecio() {
        return precio;
    }

    public void setPrecio(Number precio) {
        this.precio = precio;
    }

    public Integer getVigencia() {
        return vigencia;
    }

    public void setVigencia(Integer vigencia) {
        this.vigencia = vigencia;
    }

//    public List<OrdenVsPoliza> getOrdenVsPolizaList() {
//        return ordenVsPolizaList;
//    }
//
//    public void setOrdenVsPolizaList(List<OrdenVsPoliza> ordenVsPolizaList) {
//        this.ordenVsPolizaList = ordenVsPolizaList;
//    }

//    public OrdenVsPoliza addOrdenVsPoliza(OrdenVsPoliza ordenVsPoliza) {
//        getOrdenVsPolizaList().add(ordenVsPoliza);
//        ordenVsPoliza.setOrden(this);
//        return ordenVsPoliza;
//    }
//
//    public OrdenVsPoliza removeOrdenVsPoliza(OrdenVsPoliza ordenVsPoliza) {
//        getOrdenVsPolizaList().remove(ordenVsPoliza);
//        ordenVsPoliza.setOrden(null);
//        return ordenVsPoliza;
//    }

    public Usuario getUsuario() {
        return usuario;
    }

    public void setUsuario(Usuario usuario) {
        this.usuario = usuario;
    }

    public Instrumento getInstrumento() {
        return instrumento;
    }

    public void setInstrumento(Instrumento instrumento) {
        this.instrumento = instrumento;
    }
}
